import java.util.*;

/**
 * 迷宫
 */
public class Maze {
    private static class Node {
        int x;
        int y;
        int dir;
        Node last;

        Node (int x, int y, int dir) {
            this.x = x;
            this.y = y;
            this.dir = dir;
        }
    }

    static int[][] direction = new int[][] {{1, 0}, {0, -1}, {0, 1}, {-1, 0}}; // 控制方向
    static Map<Integer, String> map = new HashMap<>();
    static Deque<Node> deque = new LinkedList<>();
    static StringBuilder ret = new StringBuilder();
    static final int n = 30, m = 50;

    public static void main(String[] args) {
        map.put(0, "D");
        map.put(1, "L");
        map.put(2, "R");
        map.put(3, "U");
        map.put(-1, "");
        int[][] maze = new int[n + 2][m + 2];
        String[] str = new String[] {
//                "010000",
//                "000100",
//                "001001",
//                "110000"
                "01010101001011001001010110010110100100001000101010",
                "00001000100000101010010000100000001001100110100101",
                "01111011010010001000001101001011100011000000010000",
                "01000000001010100011010000101000001010101011001011",
                "00011111000000101000010010100010100000101100000000",
                "11001000110101000010101100011010011010101011110111",
                "00011011010101001001001010000001000101001110000000",
                "10100000101000100110101010111110011000010000111010",
                "00111000001010100001100010000001000101001100001001",
                "11000110100001110010001001010101010101010001101000",
                "00010000100100000101001010101110100010101010000101",
                "11100100101001001000010000010101010100100100010100",
                "00000010000000101011001111010001100000101010100011",
                "10101010011100001000011000010110011110110100001000",
                "10101010100001101010100101000010100000111011101001",
                "10000000101100010000101100101101001011100000000100",
                "10101001000000010100100001000100000100011110101001",
                "00101001010101101001010100011010101101110000110101",
                "11001010000100001100000010100101000001000111000010",
                "00001000110000110101101000000100101001001000011101",
                "10100101000101000000001110110010110101101010100001",
                "00101000010000110101010000100010001001000100010101",
                "10100001000110010001000010101001010101011111010010",
                "00000100101000000110010100101001000001000000000010",
                "11010000001001110111001001000011101001011011101000",
                "00000110100010001000100000001000011101000000110011",
                "10101000101000100010001111100010101001010000001000",
                "10000010100101001010110000000100101010001011101000",
                "00111100001000010000000110111000000001000000001011",
                "10000001100111010111010001000110111010101101111000"
        };
        for (int i = 0; i < n + 2; i++) {
            char[] cArr = new char[0];
            if (i != 0 && i != n + 1) {
                cArr = str[i - 1].toCharArray();
            }
            for (int j = 0; j < m + 2; j++) {
                if (i == 0 || j == 0 || i == n + 1 || j == m + 1) {
                    maze[i][j] = 1;
                    continue;
                }
                maze[i][j] = Character.getNumericValue(cArr[j - 1]);
            }
        }
        Node start = new Node(1, 1, -1);
        maze[1][1] = -1;
        Node end = new Node(n, m, 0);
        bfs(maze, start, end);
        System.out.println(ret.reverse().toString());
    }

    private static void bfs(int[][] maze, Node start, Node end) {
        deque.offer(start);
        while (!deque.isEmpty()) {
            int size = deque.size();
            for (int i = 0; i < size; i++) {
                Node cur = deque.poll();
                int x = cur.x, y = cur.y, dir = 0;
                while (dir < 4) {
                    int kX = x + direction[dir][0], kY = y + direction[dir][1];
                    if (maze[kX][kY] == 0) {
                        Node kid = new Node(kX, kY, dir); // dir是指上一个节点到这个节点的方向标志
                        maze[kX][kY] = -1;
                        kid.last = cur;
                        deque.offer(kid);
                        if (kX == end.x && kY == end.y) {
                            while (kid != null) {
                                ret.append(map.get(kid.dir));
                                kid = kid.last;
                            }
                            return;
                        }
                    }
                    dir ++;
                }
            }
        }
    }
}
// DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR